﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using DTOMedicalProject;

namespace MRAccesoDatos
{
    public class clsTipoAfiliacion
    {
        MRAccesoDatosDataContext db = new MRAccesoDatosDataContext();

        public clsTipoAfiliacion()
        {
            
        }

        public List<DTOTipoAfiliacion> ObtenerTipoAfiliacion()
        {
            int i = 0;

            List<DTOTipoAfiliacion> lstTipoAfiliacion = new List<DTOTipoAfiliacion>();

            try
            {
                var tipoafiliacion = (from tp in db.Tipo_Afiliacions
                              select tp).ToList();

                foreach (Tipo_Afiliacion tptipoafiliacion in tipoafiliacion)
                {
                    lstTipoAfiliacion.Add(new DTOTipoAfiliacion());
                    lstTipoAfiliacion[i].CodTipoAfiliacion = tptipoafiliacion.Cod_tipo_afiliacion;
                    lstTipoAfiliacion[i].Descripcion = tptipoafiliacion.Descripcion;
                    lstTipoAfiliacion[i].CantidadDias = Convert.ToInt32(tptipoafiliacion.Cantidad_dias);


                    i++;
                }

            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrio un error obteniendo los datos. " + ex.Message);
            }

            return lstTipoAfiliacion;

        }

        public DTORespuesta InsertarTipoAfiliacion(DTOTipoAfiliacion tptipoafiliacion)
        {
            DTORespuesta resp = new DTORespuesta();
            Tipo_Afiliacion tp_tipoafiliacion = new Tipo_Afiliacion();

            try
            {

                tp_tipoafiliacion.Cod_tipo_afiliacion = tptipoafiliacion.CodTipoAfiliacion;
                tp_tipoafiliacion.Descripcion = tptipoafiliacion.Descripcion;
                tp_tipoafiliacion.Cantidad_dias = tptipoafiliacion.CantidadDias;

                db.Tipo_Afiliacions.InsertOnSubmit(tp_tipoafiliacion);
                db.SubmitChanges();

                resp.Mensaje = "Los datos fueron insertados correctamente";
                resp.Codigo = 100;

                return resp;
            }
            catch (Exception ex)
            {
                resp.Mensaje = ex.Message;
                resp.Codigo = -100;

                return resp;

            }
        }

        public DTORespuesta ActualizarTipoAfiliacion(DTOTipoAfiliacion tptipoafiliacion)
        {
            DTORespuesta resp = new DTORespuesta();


            try
            {

                Tipo_Afiliacion tp_tipoafiliacion = db.Tipo_Afiliacions.Single(p => p.Cod_tipo_afiliacion == tptipoafiliacion.CodTipoAfiliacion);
                tp_tipoafiliacion.Cod_tipo_afiliacion = tptipoafiliacion.CodTipoAfiliacion;
                tp_tipoafiliacion.Descripcion = tptipoafiliacion.Descripcion;
                tp_tipoafiliacion.Cantidad_dias = tptipoafiliacion.CantidadDias;



                resp.Codigo = 102;
                resp.Mensaje = "Los datos fueron Actualizados correctamente.";
                return resp;

            }
            catch (Exception ex)
            {
                resp.Mensaje = ex.Message;
                resp.Codigo = -102;
                return resp;

            }

        }

        public DTORespuesta EliminarTipoAfiliacion(DTOTipoAfiliacion tptipoafiliacion)
        {
            DTORespuesta resp = new DTORespuesta();

            try
            {
                var tp_tipoafiliacion = db.Tipo_Afiliacions.Single(p => p.Cod_tipo_afiliacion == tptipoafiliacion.CodTipoAfiliacion);
                db.Tipo_Afiliacions.DeleteOnSubmit(tp_tipoafiliacion);
                db.SubmitChanges();

                resp.Codigo = 101;
                resp.Mensaje = "Los datos fueron eliminados correctamente.";
                return resp;
            }
            catch (Exception ex)
            {
                resp.Mensaje = ex.Message;
                resp.Codigo = -101;
                return resp;
            }
        }
    }
}
